Technical Q&A QA1303
Sequence Grabber - Setting the sound channel play through state

Q: Sequence Grabber を使用して音声を録音するときに、SGSettingsDialog を使用して Sound Channel を設定した場合と同様の設定を、サウンドソース「Speaker」プレイスルー設定としてアプリケーションで再現するにはどうすればよいのでしょうか。プレイスルーのオンとオフを切り替えるにはどの API を使用するのでしょうか。

A: サウンドチャネルのプレイスルー状態を変更するには、Sequence Grabber の 1 組の API SGGetChannelUsageSGSetChannelUsage を使用します。

リスト 1 に、プレースルー状態を次のいずれかに設定する方法を示します。

  • Off
  • 録音中およびプレビュー中は On
  • 録音中は Off だがプレビュー中は On

リスト 1. SetSoundChannelPlayThruState

// SetSoundChannelPlayThruState
// Sequence Grabber の「Sound Settings」ダイアログの「Source」
// タブにあるメニューポップアップコントロールの機能を再現する
//  inSoundChannel - Sequence Grabber サウンドチャネル
//  inControl - 3 つのエントリから成るポップアップメニューコントロール
//
ComponentResult SetSoundChannelPlayThruState(const SGChannel inSoundChannel,
const ControlRef inControl)
{
SInt32 value, usage;
ComonentResult err;

value = GetControl32BitValue(inControl);
switch (value) {
// 常に off
case 1:
value = 0;
break;
// プレビュー中および録音中は on
case 2:
value = seqGrabPreview | seqGrabPlayDuringRecord;
break;
// プレビュー中のみ on
case 3:
value = seqGrabPreview;
break;
  }

err = SGGetChannelUsage(inSoundChannel, &usage);
if (noErr == err) {
usage &= ‾(seqGrabPreview | seqGrabPlayDuringRecord);
usage |= value;
err = SGSetChannelUsage(inSoundChannel, usage);
  }
    
return err;
}

参考資料:


[2003 年 9 月 23 日]